package com.cyan.note.dto.manager.dashboard;

import lombok.Data;
import java.math.BigDecimal;
import java.util.List;

/**
 * 月度报告DTO
 * 
 * @author ZhangzhenYu
 * @since 2025-01-15
 */
@Data
public class MonthlyReportDTO {

    /**
     * 报告月份
     */
    private String month;

    /**
     * 总营收
     */
    private BigDecimal totalRevenue;

    /**
     * 总订单数
     */
    private Integer totalOrders;

    /**
     * 新增客户数
     */
    private Integer newCustomers;

    /**
     * 活跃客户数
     */
    private Integer activeCustomers;

    /**
     * 完成订单数
     */
    private Integer completedOrders;

    /**
     * 取消订单数
     */
    private Integer cancelledOrders;

    /**
     * 订单完成率
     */
    private BigDecimal completionRate;

    /**
     * 平均订单金额
     */
    private BigDecimal avgOrderAmount;

    /**
     * 客户满意度
     */
    private BigDecimal customerSatisfaction;

    /**
     * 打手活跃度
     */
    private BigDecimal workerActivity;

    /**
     * 环比增长数据
     */
    private GrowthData growthData;

    /**
     * 热门服务排行
     */
    private List<ServiceRanking> topServices;

    /**
     * 优秀打手排行
     */
    private List<WorkerPerformance> topWorkers;

    /**
     * 重要客户排行
     */
    private List<CustomerRanking> topCustomers;

    /**
     * 每日数据趋势
     */
    private List<DailyData> dailyTrend;

    @Data
    public static class GrowthData {
        /**
         * 营收增长率
         */
        private BigDecimal revenueGrowth;

        /**
         * 订单增长率
         */
        private BigDecimal orderGrowth;

        /**
         * 客户增长率
         */
        private BigDecimal customerGrowth;

        /**
         * 是否正增长
         */
        private Boolean isPositiveGrowth;
    }

    @Data
    public static class ServiceRanking {
        /**
         * 服务名称
         */
        private String serviceName;

        /**
         * 订单数量
         */
        private Integer orderCount;

        /**
         * 营收金额
         */
        private BigDecimal revenue;

        /**
         * 排名
         */
        private Integer rank;
    }

    @Data
    public static class WorkerPerformance {
        /**
         * 打手昵称
         */
        private String workerName;

        /**
         * 完成订单数
         */
        private Integer completedOrders;

        /**
         * 总收入
         */
        private BigDecimal totalIncome;

        /**
         * 客户评分
         */
        private BigDecimal rating;

        /**
         * 排名
         */
        private Integer rank;
    }

    @Data
    public static class CustomerRanking {
        /**
         * 客户昵称
         */
        private String customerName;

        /**
         * 消费金额
         */
        private BigDecimal consumption;

        /**
         * 订单数量
         */
        private Integer orderCount;

        /**
         * 排名
         */
        private Integer rank;
    }

    @Data
    public static class DailyData {
        /**
         * 日期
         */
        private String date;

        /**
         * 营收
         */
        private BigDecimal revenue;

        /**
         * 订单数
         */
        private Integer orders;

        /**
         * 新客户数
         */
        private Integer newCustomers;
    }
}